pxCompoundAddHullShape%(compoundDesc%, vbank*, nvert%)

Параметры

compoundDesc% - составная геометрия
vbank* - указатель на массив (банк) вершин
nvert% - количество вершин

Описание

Добавляет в составную геометрию тело с выпуклой геометрией, задаваемой набором вершин.

Смотрите так же

Пример

;Пример использования функций
;pxCompoundAddHullShape

Graphics3D 800,600,32,2

cam = CreateCamera()
PositionEntity cam,0,6,-20

light = CreateLight()
RotateEntity light,20,30,40

PxCreateWorld(1)

;Создадим кубик
;plane_body = pxCreateCube(15,0.5,15,0)
;визуализируем его
;plane_mesh=CreateCube()
;ScaleEntity(plane_mesh,15,0.5,15)

;Создаем составное тело PX
comp_desc = pxCreateCompoundDesc()

mesh1 = CreatePivot()
cube1 = CreateCube(mesh)
ScaleMesh cube1,5,.1,.1
addhull(comp_desc,cube1)

cube2 = CreateCube(mesh)
ScaleMesh cube2,.1,5,.1
addhull(comp_desc,cube2)

cube3 = CreateCube(mesh)
ScaleMesh cube3,.1,.1,5
addhull(comp_desc,cube3)

body = pxCreateCompound(comp_desc, 2); создаём боди из дескриптора

;Ставим тело в позицию
pxSetPosition body,0,15,0
pxSetRotation body,10,10,10

While Not(KeyHit(1))

;обсчитываем физический мир
    RenderPhysic(60,0)

;визуализируем компаунд
    pxSetEntity(cube1, body)
    pxSetEntity(cube2, body)
    pxSetEntity(cube3, body)

    RenderWorld

    Flip
Wend
End

;функция добавляет тело на основе меша в компаунд
Function addhull(compoundDesc%, mesh%)
    Local nsurf = CountSurfaces(mesh)
    Local nvert = 0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
    Local vbank = CreateBank(nvert*4*3)
    nv = 0
    For ns = 1 To nsurf
        surf = GetSurface(mesh,ns)
        nvv = CountVertices(surf)
        For nvc = 0 To nvv - 1
            PokeFloat vbank,nv*12+0,VertexX(surf,nvc)
            PokeFloat vbank,nv*12+4,VertexY(surf,nvc)
            PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)
            nv = nv+1
        Next
    Next
;----------- применяем pxCompoundAddHullShape: ------------
    pxCompoundAddHullShape(compoundDesc,vbank,nvert)
    FreeBank vbank
End Function

К содержанию

Нажмите здесь чтобы увидеть последнюю версию этой странички в режиме online.